package com.alipay.config;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.main.ExtendMap;
import com.main.ParseConfig;

/* *
 *类名：AlipayConfig
 *功能：基础配置类
 *详细：设置帐户有关信息及返回路径
 *版本：3.4
 *修改日期：2016-03-08
 *说明：
 *以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 *该代码仅供学习和研究支付宝接口使用，只是提供一个参考。
 */

public class AlipayConfig {
	
	public static void init(String projectUrl){
		notify_url=projectUrl+notify_url;
		return_url=projectUrl+return_url;
		
		ExtendMap<String,String> alipay=ParseConfig.getConfigMap("alipay");
		partner=alipay.getString("partner");
		seller_id=partner;
		key=alipay.getString("key");
	}
	
//↓↓↓↓↓↓↓↓↓↓请在这里配置您的基本信息↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

	// 合作身份者ID，签约账号，以2088开头由16位纯数字组成的字符串，查看地址：https://b.alipay.com/order/pidAndKey.htm
	public static String partner = "";
	
	// 收款支付宝账号，以2088开头由16位纯数字组成的字符串，一般情况下收款账号就是签约账号
	public static String seller_id = "";

	// MD5密钥，安全检验码，由数字和字母组成的32位字符串，查看地址：https://b.alipay.com/order/pidAndKey.htm
    public static String key = "";
	

	// 服务器异步通知页面路径  需http://格式的完整路径，不能加?id=123这类自定义参数，必须外网可以正常访问
	public static String notify_url = "/aliYbNotify.do";

	// 页面跳转同步通知页面路径 需http://格式的完整路径，不能加?id=123这类自定义参数，必须外网可以正常访问
	public static String return_url = "/aliTbNotify.do";

	// 签名方式
	public static String sign_type = "RSA";
	
	// 调试用，创建TXT日志文件夹路径，见AlipayCore.java类中的logResult(String sWord)打印方法。
	public static String log_path = "C:\\";
		
	// 字符编码格式 目前支持utf-8
	public static String input_charset = "utf-8";
		
	// 支付类型 ，无需修改
	public static String payment_type = "1";
		
	// 调用的接口名，无需修改
//	public static String service = "alipay.wap.create.direct.pay.by.user";
//	public static String service = "create_direct_pay_by_user";
	
	public static String getService(String userAgent){
		if(likeAndroid(userAgent) || likeIOS(userAgent)){
			return "alipay.wap.create.direct.pay.by.user";
		}else{
			return "create_direct_pay_by_user";
		}
	}
	 
	private static boolean likeAndroid(String userAgent){
		String androidReg="\\bandroid|Nexus\\b";
		Pattern androidPat=Pattern.compile(androidReg,Pattern.CASE_INSENSITIVE);
		
	    if(null == userAgent) userAgent="";
	    
	    Matcher matcherAndroid=androidPat.matcher(userAgent);
	    if(matcherAndroid.find()){
	        return true;
	    }else{
	        return false;
	    }
	}
	
	private static boolean likeIOS(String userAgent){
		String iosReg="ip(hone|od|ad)";
		Pattern iosPat=Pattern.compile(iosReg,Pattern.CASE_INSENSITIVE);
		
	    if(null==userAgent) userAgent="";
	    
	    Matcher matcherIOS=iosPat.matcher(userAgent);
	    if(matcherIOS.find()){
	        return true;
	    }else{
	        return false;
	    }
	}

//↑↑↑↑↑↑↑↑↑↑请在这里配置您的基本信息↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

}

